package org.example.completed.utils;

import io.jsonwebtoken.*;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.util.Date;

public class JwtUtil {
    private static long time = 1000*60*60*24;   // token 有效期为一天
    // 自动生成符合 HS256 的安全密钥（密钥长度 >= 256 bits）
    private static final Key KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256);

    // 生成token ，三个参数是我实体类的字段，可根据自身需求来传，一般只需要用户id即可
    // 生成 JWT Token
    public static String createJwtToken(String username) {
        return Jwts.builder()
                .setSubject(username) // 设置主题为用户名
                .setExpiration(new Date(System.currentTimeMillis() + time)) // 设置过期时间
                .signWith(SignatureAlgorithm.HS256, KEY) // 使用安全密钥签名
                .compact(); // 生成最终的 Token
    }

    // 验证 token 是否还有效，返回具体内容
    // 验证 JWT Token
    public static Claims checkToken(String token) {
        return Jwts.parser()
                .setSigningKey(KEY) // 设置签名密钥
                .parseClaimsJws(token)
                .getBody(); // 返回解码后的内容
    }
}
